/**
 * <p>对form上字段为空的校验</p>
 * xtype = cceafvalidatenullcheck

 * @module Ext-ux-cceaf-validate
 * @class cceaf.validate.NullCheck
 * @extends Object
 * @since 1.0
 */
Ext.define('cceaf.validate.NullCheck', {
	alias : 'cceaf.cceafvalidatenullcheck',
	
	/**
	 * 要校验控件，如果设置了该值，itemId、name均无效
	 *
     * @property control 
     * @type field
     * @default null
     */
	control : null,
	
	/**
	 * 要校验控件的itemId
	 *
     * @property itemId 
     * @type String
     * @default null
     */
	itemId : null,
	
	/**
	 * 要校验控件的name
	 *
     * @property name 
     * @type String
     * @default null
     */
	name : null,
	
	/**
	 * 要校验控件的label名称
	 *
     * @property label 
     * @type String
     * @default null
     */
	label : null,
	
	/**
	 * 要校验控件的父容器
	 *
     * @property father 
     * @type panel
     * @default null
     */
	father : null,
	
	/**
	 * 检验不通过显示的内容
	 *
     * @property display 
     * @type String
     * @default null
     */
	display : null,
	
	/**
	 * 校验不通过是否聚焦，默认聚焦
	 *
     * @property focus 
     * @type Boolean
     * @default true
     */
	focus : true,
	
	constructor : function(config) {
		config = config || {};
		
		var father = config.father;
		var control = this.control;
		if (!control) {
			if (!father){
				alert('必须设置校验器的校验字段或其父容器！');
				return;
			} else {
				if (config.itemId) {
					control = father.down('#' + config.itemId);
				} else if (config.name){
					control = father.down('[name=' + config.name + "]");
				} else {
					alert('必须设置校验器的itemId或name属性！');
					return;
				}
			}
		}
		if (!control) {
			alert('请正确设置itemId(或name)、father或control的值！');
		}
		
		var displayInfo = config.display;
		if (!displayInfo) {
			if (config.label) {
				displayInfo = config.label + '不能为空！';
			}
		}
		
		this.displayInfo = displayInfo;
		this.control = control;
		
		cceaf.validate.NullCheck.superclass.constructor.apply(this, arguments);
	},
	
	/**
	* 校验字段是否为null，null则返回false
	* 
	* @return {Boolean} 字段不为空则为true
	*/
	validate: function() {
		var check = this;

		var control = check.control;
		if (!control) {
			alert('要检验的控件不存在，请正确设置itemId(或name)、father或control的值！');
			return false;
		}
		
		var displayInfo = check.displayInfo;
		if (!displayInfo) {
			alert('校验失败显示内容没有设置，请正确设置label或者display的值！');
			return false;
		}
		
		if (!control.getValue()) {
			Ext.MessageBox.show({
				title:'字段校验提示框',
				modal: true,
				msg: displayInfo,
				minWidth: 200,
				buttons: Ext.MessageBox.OK,
				icon: Ext.MessageBox.INFO,
				fn:function(){
					if (check.focus == true) {
						control.focus(true,200);
					}
				}
			});
			
			return false;
		}
		
		return true;
	}
});
